//
//  MainViewController.swift
//  Sina
//
//  Created by maling  on 15/11/3.
//  Copyright © 2015年 maling . All rights reserved.
//

import UIKit

class MainViewController: UITabBarController {

    // MARK: - 监听方法
    /// 点击撰写按钮
    /// 如果`单纯`使用 `private` 运行循环将无法正确发送消息，导致崩溃
    /// 如果使用 @objc 修饰符号，可以保证运行循环能够发送此消息，即使函数被标记为 private
    
    
    @objc private func clickComposedButton() {
        var vc: UIViewController
        if UserAccountViewModel.sharedUserAccount.userLogin {
            vc = ComposeViewController()
        } else {
           vc = OAuthViewController()
        }
        
        let nav = UINavigationController(rootViewController: vc)
        presentViewController(nav, animated: true, completion: nil)
        
        
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

        
        //1》添加所有的控制器 - 并不会创建tabbar里面的按钮
        //懒加载是无处不在的 所有的控件都是延迟加载的
        //这里只是创建控制器 还没有控制器的View 因此添加撰写按钮添加不上要在View出现后才能添加上去
        addChildViewControllers()
        
        //此处的输出结果为空 证明了View还没有创建出来
//        print(tabBar.subviews)
        
        //2》添加撰写按钮
        addComposedButton()
    
    }

    //此处的View出现了才能添加上子按钮
    override func viewDidAppear(animated: Bool) {
        
        super.viewDidAppear(animated)
        //此处才有tabBar上的按钮
//        print(tabBar.subviews)
        
        tabBar.bringSubviewToFront(composeButton)
}
    
    
    
// MARK: - 懒加载撰写按钮
    private lazy var composeButton: UIButton = UIButton(imageName: "tabbar_compose_icon_add", backImage: "tabbar_compose_button")
}

// MARK: - 设置界面
extension MainViewController {

    private func addComposedButton() {
    
        //1.向tabbar里面添加撰写按钮
        tabBar.addSubview(composeButton)
        
        //2.调整按钮位置
        let count = childViewControllers.count //tabBar.subviews.count
//        print(count)
        let btnW = tabBar.bounds.width / CGFloat(count)
        
        composeButton.frame = CGRectInset(tabBar.bounds, 2 * btnW, 0)
    
       // 给撰写按钮添加一个监听方法
        composeButton.addTarget(self, action: "clickComposedButton", forControlEvents:.TouchUpInside)

        
    }
    
    
    
    
      private func addChildViewControllers() {
       
        
        //MARK: 图片文字 取消系统提供的渲染模式
        tabBar.tintColor = UIColor.orangeColor()
        
        //添加首页控制器
        addChildController(HomeTableViewController(), title: "主页", imageName: "tabbar_home")
        addChildController(MessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        //添加撰写按钮显示的控制器
        addChildViewController(UIViewController())
        
        addChildController(DiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildController(ProfileTableViewController(), title: "我", imageName: "tabbar_profile")
        
        
      }
    
    
    
    private func addChildController(vc: UIViewController,title: String, imageName: String) {
    
        //创建一个home控制器
        //1》
        //      addChildController()
//        let homeController = HomeTableViewController()
        vc.title = title
        
        //设置tabbar的图片按钮
      vc.tabBarItem.image = UIImage(named: imageName)
        //创建一个导航控制器
        let nav = UINavigationController(rootViewController: vc)
        addChildViewController(nav)
        
        
        
    }

}


